Conversation
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d8c198a39c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| let cachedSimctlPrivacyServicesCacheKey: string | undefined; | ||
|
|
||
| function buildIosAppResolutionCacheKey(device: DeviceInfo, target: string): string { | ||
| return ['ios', device.id, device.kind, target.trim().toLowerCase()].join('\0'); |
There was a problem hiding this comment.
Include simulator set path in iOS resolution cache key
resolveIosApp now caches display-name lookups by device.id/kind, but simulator app inventory is actually scoped by device.simulatorSetPath via runSimctl (--set ...). Because the cache key omits that set path, two sessions targeting different simulator sets can reuse a stale bundle mapping for up to 30s when IDs overlap (a supported multi-tenant pattern in this repo), causing open/close/uninstall to act on the wrong bundle without re-querying listapps.
Useful? React with 👍 / 👎.
be85970 to
3ebb342
Compare
3ebb342 to
a0b9611
Compare
Summary
Cache successful human-readable app resolution for Android, iOS, and macOS with short-lived per-device keys.
Bypass cache for exact package/bundle IDs and clear app-resolution caches around install/uninstall/reinstall flows so stale inventory-derived IDs are not retained.
Extract shared TTL cache mechanics and add platform tests for cache reuse, exact ID bypass, and install invalidation.
Touched files: 6. Scope stayed within platform app resolution and tests.
Validation
Known local gap: pnpm check:unit was attempted, but the full default Vitest run repeatedly timed out src/tests/client-metro-packaged.test.ts in this environment with status null. That exact test passed when run alone, and the full Vitest suite passed with --testTimeout=120000.